/******************************************************************************
 * Student Name: Ofri Keidar
 * Exercise Name: Ex2
 * File Description: Class Lecturer's interface
 ******************************************************************************/

#ifndef LECTURER_H_
#define LECTURER_H_

#include <string>
using namespace std;

class Lecturer {

private:
	const int m_id; // lecturer's id
	string m_name; // lecturer's name

	/***************************************************************************************
	 * function name: Lecturer(const Lecturer& lecturer)
	 * The Input: Lecturer to be copied
	 * The output: None
	 * The Function operation: The copy constructor is private and an empty-implementation
	 * 						   because lecturer objects should not be sent to functions
	 * 						   by value
	 ***************************************************************************************/
	Lecturer(const Lecturer& lecturer): m_id(lecturer.getID()) {}

public:
	/***************************************************************************************
	 * function name: Lecturer(const int id, const string name)
	 * The Input: Id and name for the new lecturer
	 * The output: None
	 * The Function operation: Creates a new lecturer with given attributes
	 ***************************************************************************************/
	Lecturer(const int id, const string name);

	/****************************************************************************************
	 * function name: ~Lecturer()
	 * The Input: None
	 * The output: None
	 * The Function operation: Destructs lecturer object
	 ***************************************************************************************/
	~Lecturer();

	/****************************************************************************************
	 * function name: getID()
	 * The Input: None
	 * The output: Lecturer's id
	 * The Function operation: Returns id attribute of lecturer, without changing the object
	 ****************************************************************************************/
	int getID() const {return m_id;}

	/****************************************************************************************
	 * function name: getName()
	 * The Input: None
	 * The output: Lecturer's name
	 * The Function operation: Returns name attribute of lecturer, without changing the object
	 ****************************************************************************************/
	string getName() const {return m_name;}

	/****************************************************************************************
	 * function name: setName(const string newName)
	 * The Input: New name for the lecturer
	 * The output: None
	 * The Function operation: Sets lecturer's name attribute according to given value.
	 * 						   The method does not change given name
	 ****************************************************************************************/
	void setName(const string newName) {m_name = newName;}
};



#endif
